package br.pucrio.inf.parser.antlr.internal; 

import org.eclipse.xtext.*;
import org.eclipse.xtext.parser.*;
import org.eclipse.xtext.parser.impl.*;
import org.eclipse.emf.ecore.util.EcoreUtil;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.xtext.parser.antlr.AbstractInternalAntlrParser;
import org.eclipse.xtext.parser.antlr.XtextTokenStream;
import org.eclipse.xtext.parser.antlr.XtextTokenStream.HiddenTokens;
import org.eclipse.xtext.parser.antlr.AntlrDatatypeRuleToken;
import br.pucrio.inf.services.TamderaGrammarAccess;



import org.antlr.runtime.*;
import java.util.Stack;
import java.util.List;
import java.util.ArrayList;

@SuppressWarnings("all")
public class InternalTamderaParser extends AbstractInternalAntlrParser {
    public static final String[] tokenNames = new String[] {
        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "RULE_STRING", "RULE_INT", "RULE_ID", "RULE_DEPENDENCYTYPE", "RULE_ONLYCANDEPENDENCYTYPE", "RULE_SEPARATOR", "RULE_OPERATOR", "RULE_ML_COMMENT", "RULE_SL_COMMENT", "RULE_WS", "RULE_ANY_OTHER", "'.'", "'constraintset'", "'{'", "'}'", "'concept'", "'derives'", "'creates'", "'declares'", "'invokes'", "'depends'", "'-'", "'only'", "'package:'", "'regExpr:'", "'parent:'", "'prefix:'", "'suffix:'", "'name:'", "'LOC'", "'CBO'", "'AC'", "'CR'", "'HEff'", "'HDiff'", "'NOA'", "'NOO'", "'CM'"
    };
    public static final int RULE_SEPARATOR=9;
    public static final int RULE_ID=6;
    public static final int T__40=40;
    public static final int T__41=41;
    public static final int T__29=29;
    public static final int T__28=28;
    public static final int T__27=27;
    public static final int T__26=26;
    public static final int T__25=25;
    public static final int T__24=24;
    public static final int T__23=23;
    public static final int T__22=22;
    public static final int RULE_ANY_OTHER=14;
    public static final int T__21=21;
    public static final int T__20=20;
    public static final int RULE_SL_COMMENT=12;
    public static final int EOF=-1;
    public static final int RULE_ML_COMMENT=11;
    public static final int T__19=19;
    public static final int T__30=30;
    public static final int RULE_ONLYCANDEPENDENCYTYPE=8;
    public static final int T__31=31;
    public static final int RULE_STRING=4;
    public static final int T__32=32;
    public static final int T__33=33;
    public static final int T__16=16;
    public static final int T__34=34;
    public static final int T__15=15;
    public static final int T__35=35;
    public static final int T__18=18;
    public static final int T__36=36;
    public static final int T__17=17;
    public static final int T__37=37;
    public static final int T__38=38;
    public static final int T__39=39;
    public static final int RULE_INT=5;
    public static final int RULE_OPERATOR=10;
    public static final int RULE_WS=13;
    public static final int RULE_DEPENDENCYTYPE=7;

    // delegates
    // delegators


        public InternalTamderaParser(TokenStream input) {
            this(input, new RecognizerSharedState());
        }
        public InternalTamderaParser(TokenStream input, RecognizerSharedState state) {
            super(input, state);
             
        }
        

    public String[] getTokenNames() { return InternalTamderaParser.tokenNames; }
    public String getGrammarFileName() { return "../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g"; }



     	private TamderaGrammarAccess grammarAccess;
     	
        public InternalTamderaParser(TokenStream input, TamderaGrammarAccess grammarAccess) {
            this(input);
            this.grammarAccess = grammarAccess;
            registerRules(grammarAccess.getGrammar());
        }
        
        @Override
        protected String getFirstRuleName() {
        	return "RulesSpecification";	
       	}
       	
       	@Override
       	protected TamderaGrammarAccess getGrammarAccess() {
       		return grammarAccess;
       	}



    // $ANTLR start "entryRuleRulesSpecification"
    // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:67:1: entryRuleRulesSpecification returns [EObject current=null] : iv_ruleRulesSpecification= ruleRulesSpecification EOF ;
    public final EObject entryRuleRulesSpecification() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleRulesSpecification = null;


        try {
            // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:68:2: (iv_ruleRulesSpecification= ruleRulesSpecification EOF )
            // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:69:2: iv_ruleRulesSpecification= ruleRulesSpecification EOF
            {
             newCompositeNode(grammarAccess.getRulesSpecificationRule()); 
            pushFollow(FOLLOW_ruleRulesSpecification_in_entryRuleRulesSpecification75);
            iv_ruleRulesSpecification=ruleRulesSpecification();

            state._fsp--;

             current =iv_ruleRulesSpecification; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleRulesSpecification85); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleRulesSpecification"


    // $ANTLR start "ruleRulesSpecification"
    // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:76:1: ruleRulesSpecification returns [EObject current=null] : ( (lv_paragraphs_0_0= ruleParagraph ) )* ;
    public final EObject ruleRulesSpecification() throws RecognitionException {
        EObject current = null;

        EObject lv_paragraphs_0_0 = null;


         enterRule(); 
            
        try {
            // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:79:28: ( ( (lv_paragraphs_0_0= ruleParagraph ) )* )
            // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:80:1: ( (lv_paragraphs_0_0= ruleParagraph ) )*
            {
            // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:80:1: ( (lv_paragraphs_0_0= ruleParagraph ) )*
            loop1:
            do {
                int alt1=2;
                int LA1_0 = input.LA(1);

                if ( (LA1_0==RULE_ID||LA1_0==16||LA1_0==19||LA1_0==26) ) {
                    alt1=1;
                }


                switch (alt1) {
            	case 1 :
            	    // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:81:1: (lv_paragraphs_0_0= ruleParagraph )
            	    {
            	    // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:81:1: (lv_paragraphs_0_0= ruleParagraph )
            	    // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:82:3: lv_paragraphs_0_0= ruleParagraph
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getRulesSpecificationAccess().getParagraphsParagraphParserRuleCall_0()); 
            	    	    
            	    pushFollow(FOLLOW_ruleParagraph_in_ruleRulesSpecification130);
            	    lv_paragraphs_0_0=ruleParagraph();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getRulesSpecificationRule());
            	    	        }
            	           		add(
            	           			current, 
            	           			"paragraphs",
            	            		lv_paragraphs_0_0, 
            	            		"Paragraph");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }
            	    break;

            	default :
            	    break loop1;
                }
            } while (true);


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleRulesSpecification"


    // $ANTLR start "entryRuleQualifiedName"
    // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:106:1: entryRuleQualifiedName returns [String current=null] : iv_ruleQualifiedName= ruleQualifiedName EOF ;
    public final String entryRuleQualifiedName() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleQualifiedName = null;


        try {
            // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:107:2: (iv_ruleQualifiedName= ruleQualifiedName EOF )
            // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:108:2: iv_ruleQualifiedName= ruleQualifiedName EOF
            {
             newCompositeNode(grammarAccess.getQualifiedNameRule()); 
            pushFollow(FOLLOW_ruleQualifiedName_in_entryRuleQualifiedName167);
            iv_ruleQualifiedName=ruleQualifiedName();

            state._fsp--;

             current =iv_ruleQualifiedName.getText(); 
            match(input,EOF,FOLLOW_EOF_in_entryRuleQualifiedName178); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleQualifiedName"


    // $ANTLR start "ruleQualifiedName"
    // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:115:1: ruleQualifiedName returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (this_STRING_0= RULE_STRING (kw= '.' this_STRING_2= RULE_STRING )* ) ;
    public final AntlrDatatypeRuleToken ruleQualifiedName() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token this_STRING_0=null;
        Token kw=null;
        Token this_STRING_2=null;

         enterRule(); 
            
        try {
            // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:118:28: ( (this_STRING_0= RULE_STRING (kw= '.' this_STRING_2= RULE_STRING )* ) )
            // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:119:1: (this_STRING_0= RULE_STRING (kw= '.' this_STRING_2= RULE_STRING )* )
            {
            // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:119:1: (this_STRING_0= RULE_STRING (kw= '.' this_STRING_2= RULE_STRING )* )
            // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:119:6: this_STRING_0= RULE_STRING (kw= '.' this_STRING_2= RULE_STRING )*
            {
            this_STRING_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleQualifiedName218); 

            		current.merge(this_STRING_0);
                
             
                newLeafNode(this_STRING_0, grammarAccess.getQualifiedNameAccess().getSTRINGTerminalRuleCall_0()); 
                
            // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:126:1: (kw= '.' this_STRING_2= RULE_STRING )*
            loop2:
            do {
                int alt2=2;
                int LA2_0 = input.LA(1);

                if ( (LA2_0==15) ) {
                    alt2=1;
                }


                switch (alt2) {
            	case 1 :
            	    // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:127:2: kw= '.' this_STRING_2= RULE_STRING
            	    {
            	    kw=(Token)match(input,15,FOLLOW_15_in_ruleQualifiedName237); 

            	            current.merge(kw);
            	            newLeafNode(kw, grammarAccess.getQualifiedNameAccess().getFullStopKeyword_1_0()); 
            	        
            	    this_STRING_2=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleQualifiedName252); 

            	    		current.merge(this_STRING_2);
            	        
            	     
            	        newLeafNode(this_STRING_2, grammarAccess.getQualifiedNameAccess().getSTRINGTerminalRuleCall_1_1()); 
            	        

            	    }
            	    break;

            	default :
            	    break loop2;
                }
            } while (true);


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleQualifiedName"


    // $ANTLR start "entryRuleValue"
    // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:147:1: entryRuleValue returns [String current=null] : iv_ruleValue= ruleValue EOF ;
    public final String entryRuleValue() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleValue = null;


        try {
            // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:148:2: (iv_ruleValue= ruleValue EOF )
            // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:149:2: iv_ruleValue= ruleValue EOF
            {
             newCompositeNode(grammarAccess.getValueRule()); 
            pushFollow(FOLLOW_ruleValue_in_entryRuleValue300);
            iv_ruleValue=ruleValue();

            state._fsp--;

             current =iv_ruleValue.getText(); 
            match(input,EOF,FOLLOW_EOF_in_entryRuleValue311); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleValue"


    // $ANTLR start "ruleValue"
    // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:156:1: ruleValue returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : this_INT_0= RULE_INT ;
    public final AntlrDatatypeRuleToken ruleValue() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token this_INT_0=null;

         enterRule(); 
            
        try {
            // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:159:28: (this_INT_0= RULE_INT )
            // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:160:5: this_INT_0= RULE_INT
            {
            this_INT_0=(Token)match(input,RULE_INT,FOLLOW_RULE_INT_in_ruleValue350); 

            		current.merge(this_INT_0);
                
             
                newLeafNode(this_INT_0, grammarAccess.getValueAccess().getINTTerminalRuleCall()); 
                

            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleValue"


    // $ANTLR start "entryRuleParagraph"
    // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:175:1: entryRuleParagraph returns [EObject current=null] : iv_ruleParagraph= ruleParagraph EOF ;
    public final EObject entryRuleParagraph() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleParagraph = null;


        try {
            // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:176:2: (iv_ruleParagraph= ruleParagraph EOF )
            // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:177:2: iv_ruleParagraph= ruleParagraph EOF
            {
             newCompositeNode(grammarAccess.getParagraphRule()); 
            pushFollow(FOLLOW_ruleParagraph_in_entryRuleParagraph394);
            iv_ruleParagraph=ruleParagraph();

            state._fsp--;

             current =iv_ruleParagraph; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleParagraph404); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleParagraph"


    // $ANTLR start "ruleParagraph"
    // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:184:1: ruleParagraph returns [EObject current=null] : (this_ConceptDeclaration_0= ruleConceptDeclaration | this_DependencyRuleDeclaration_1= ruleDependencyRuleDeclaration | this_ConstraintSetDeclaration_2= ruleConstraintSetDeclaration ) ;
    public final EObject ruleParagraph() throws RecognitionException {
        EObject current = null;

        EObject this_ConceptDeclaration_0 = null;

        EObject this_DependencyRuleDeclaration_1 = null;

        EObject this_ConstraintSetDeclaration_2 = null;


         enterRule(); 
            
        try {
            // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:187:28: ( (this_ConceptDeclaration_0= ruleConceptDeclaration | this_DependencyRuleDeclaration_1= ruleDependencyRuleDeclaration | this_ConstraintSetDeclaration_2= ruleConstraintSetDeclaration ) )
            // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:188:1: (this_ConceptDeclaration_0= ruleConceptDeclaration | this_DependencyRuleDeclaration_1= ruleDependencyRuleDeclaration | this_ConstraintSetDeclaration_2= ruleConstraintSetDeclaration )
            {
            // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:188:1: (this_ConceptDeclaration_0= ruleConceptDeclaration | this_DependencyRuleDeclaration_1= ruleDependencyRuleDeclaration | this_ConstraintSetDeclaration_2= ruleConstraintSetDeclaration )
            int alt3=3;
            switch ( input.LA(1) ) {
            case 19:
                {
                alt3=1;
                }
                break;
            case RULE_ID:
            case 26:
                {
                alt3=2;
                }
                break;
            case 16:
                {
                alt3=3;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 3, 0, input);

                throw nvae;
            }

            switch (alt3) {
                case 1 :
                    // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:189:5: this_ConceptDeclaration_0= ruleConceptDeclaration
                    {
                     
                            newCompositeNode(grammarAccess.getParagraphAccess().getConceptDeclarationParserRuleCall_0()); 
                        
                    pushFollow(FOLLOW_ruleConceptDeclaration_in_ruleParagraph451);
                    this_ConceptDeclaration_0=ruleConceptDeclaration();

                    state._fsp--;

                     
                            current = this_ConceptDeclaration_0; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 2 :
                    // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:199:5: this_DependencyRuleDeclaration_1= ruleDependencyRuleDeclaration
                    {
                     
                            newCompositeNode(grammarAccess.getParagraphAccess().getDependencyRuleDeclarationParserRuleCall_1()); 
                        
                    pushFollow(FOLLOW_ruleDependencyRuleDeclaration_in_ruleParagraph478);
                    this_DependencyRuleDeclaration_1=ruleDependencyRuleDeclaration();

                    state._fsp--;

                     
                            current = this_DependencyRuleDeclaration_1; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 3 :
                    // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:209:5: this_ConstraintSetDeclaration_2= ruleConstraintSetDeclaration
                    {
                     
                            newCompositeNode(grammarAccess.getParagraphAccess().getConstraintSetDeclarationParserRuleCall_2()); 
                        
                    pushFollow(FOLLOW_ruleConstraintSetDeclaration_in_ruleParagraph505);
                    this_ConstraintSetDeclaration_2=ruleConstraintSetDeclaration();

                    state._fsp--;

                     
                            current = this_ConstraintSetDeclaration_2; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleParagraph"


    // $ANTLR start "entryRuleConstraintSetDeclaration"
    // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:225:1: entryRuleConstraintSetDeclaration returns [EObject current=null] : iv_ruleConstraintSetDeclaration= ruleConstraintSetDeclaration EOF ;
    public final EObject entryRuleConstraintSetDeclaration() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleConstraintSetDeclaration = null;


        try {
            // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:226:2: (iv_ruleConstraintSetDeclaration= ruleConstraintSetDeclaration EOF )
            // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:227:2: iv_ruleConstraintSetDeclaration= ruleConstraintSetDeclaration EOF
            {
             newCompositeNode(grammarAccess.getConstraintSetDeclarationRule()); 
            pushFollow(FOLLOW_ruleConstraintSetDeclaration_in_entryRuleConstraintSetDeclaration540);
            iv_ruleConstraintSetDeclaration=ruleConstraintSetDeclaration();

            state._fsp--;

             current =iv_ruleConstraintSetDeclaration; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleConstraintSetDeclaration550); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleConstraintSetDeclaration"


    // $ANTLR start "ruleConstraintSetDeclaration"
    // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:234:1: ruleConstraintSetDeclaration returns [EObject current=null] : (otherlv_0= 'constraintset' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '{' ( (lv_constraints_3_0= ruleConstraint ) )* otherlv_4= '}' ) ;
    public final EObject ruleConstraintSetDeclaration() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token lv_name_1_0=null;
        Token otherlv_2=null;
        Token otherlv_4=null;
        EObject lv_constraints_3_0 = null;


         enterRule(); 
            
        try {
            // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:237:28: ( (otherlv_0= 'constraintset' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '{' ( (lv_constraints_3_0= ruleConstraint ) )* otherlv_4= '}' ) )
            // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:238:1: (otherlv_0= 'constraintset' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '{' ( (lv_constraints_3_0= ruleConstraint ) )* otherlv_4= '}' )
            {
            // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:238:1: (otherlv_0= 'constraintset' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '{' ( (lv_constraints_3_0= ruleConstraint ) )* otherlv_4= '}' )
            // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:238:3: otherlv_0= 'constraintset' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '{' ( (lv_constraints_3_0= ruleConstraint ) )* otherlv_4= '}'
            {
            otherlv_0=(Token)match(input,16,FOLLOW_16_in_ruleConstraintSetDeclaration587); 

                	newLeafNode(otherlv_0, grammarAccess.getConstraintSetDeclarationAccess().getConstraintsetKeyword_0());
                
            // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:242:1: ( (lv_name_1_0= RULE_ID ) )
            // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:243:1: (lv_name_1_0= RULE_ID )
            {
            // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:243:1: (lv_name_1_0= RULE_ID )
            // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:244:3: lv_name_1_0= RULE_ID
            {
            lv_name_1_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleConstraintSetDeclaration604); 

            			newLeafNode(lv_name_1_0, grammarAccess.getConstraintSetDeclarationAccess().getNameIDTerminalRuleCall_1_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getConstraintSetDeclarationRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"name",
                    		lv_name_1_0, 
                    		"ID");
            	    

            }


            }

            otherlv_2=(Token)match(input,17,FOLLOW_17_in_ruleConstraintSetDeclaration621); 

                	newLeafNode(otherlv_2, grammarAccess.getConstraintSetDeclarationAccess().getLeftCurlyBracketKeyword_2());
                
            // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:264:1: ( (lv_constraints_3_0= ruleConstraint ) )*
            loop4:
            do {
                int alt4=2;
                int LA4_0 = input.LA(1);

                if ( ((LA4_0>=33 && LA4_0<=41)) ) {
                    alt4=1;
                }


                switch (alt4) {
            	case 1 :
            	    // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:265:1: (lv_constraints_3_0= ruleConstraint )
            	    {
            	    // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:265:1: (lv_constraints_3_0= ruleConstraint )
            	    // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:266:3: lv_constraints_3_0= ruleConstraint
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getConstraintSetDeclarationAccess().getConstraintsConstraintParserRuleCall_3_0()); 
            	    	    
            	    pushFollow(FOLLOW_ruleConstraint_in_ruleConstraintSetDeclaration642);
            	    lv_constraints_3_0=ruleConstraint();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getConstraintSetDeclarationRule());
            	    	        }
            	           		add(
            	           			current, 
            	           			"constraints",
            	            		lv_constraints_3_0, 
            	            		"Constraint");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }
            	    break;

            	default :
            	    break loop4;
                }
            } while (true);

            otherlv_4=(Token)match(input,18,FOLLOW_18_in_ruleConstraintSetDeclaration655); 

                	newLeafNode(otherlv_4, grammarAccess.getConstraintSetDeclarationAccess().getRightCurlyBracketKeyword_4());
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleConstraintSetDeclaration"


    // $ANTLR start "entryRuleConceptDeclaration"
    // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:294:1: entryRuleConceptDeclaration returns [EObject current=null] : iv_ruleConceptDeclaration= ruleConceptDeclaration EOF ;
    public final EObject entryRuleConceptDeclaration() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleConceptDeclaration = null;


        try {
            // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:295:2: (iv_ruleConceptDeclaration= ruleConceptDeclaration EOF )
            // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:296:2: iv_ruleConceptDeclaration= ruleConceptDeclaration EOF
            {
             newCompositeNode(grammarAccess.getConceptDeclarationRule()); 
            pushFollow(FOLLOW_ruleConceptDeclaration_in_entryRuleConceptDeclaration691);
            iv_ruleConceptDeclaration=ruleConceptDeclaration();

            state._fsp--;

             current =iv_ruleConceptDeclaration; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleConceptDeclaration701); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleConceptDeclaration"


    // $ANTLR start "ruleConceptDeclaration"
    // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:303:1: ruleConceptDeclaration returns [EObject current=null] : (otherlv_0= 'concept' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '{' ( (lv_conceptMapper_3_0= ruleConceptMap ) )? ( (lv_constraints_4_0= ruleConstraint ) )* ( (otherlv_5= RULE_ID ) )* otherlv_6= '}' ) ;
    public final EObject ruleConceptDeclaration() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token lv_name_1_0=null;
        Token otherlv_2=null;
        Token otherlv_5=null;
        Token otherlv_6=null;
        EObject lv_conceptMapper_3_0 = null;

        EObject lv_constraints_4_0 = null;


         enterRule(); 
            
        try {
            // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:306:28: ( (otherlv_0= 'concept' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '{' ( (lv_conceptMapper_3_0= ruleConceptMap ) )? ( (lv_constraints_4_0= ruleConstraint ) )* ( (otherlv_5= RULE_ID ) )* otherlv_6= '}' ) )
            // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:307:1: (otherlv_0= 'concept' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '{' ( (lv_conceptMapper_3_0= ruleConceptMap ) )? ( (lv_constraints_4_0= ruleConstraint ) )* ( (otherlv_5= RULE_ID ) )* otherlv_6= '}' )
            {
            // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:307:1: (otherlv_0= 'concept' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '{' ( (lv_conceptMapper_3_0= ruleConceptMap ) )? ( (lv_constraints_4_0= ruleConstraint ) )* ( (otherlv_5= RULE_ID ) )* otherlv_6= '}' )
            // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:307:3: otherlv_0= 'concept' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '{' ( (lv_conceptMapper_3_0= ruleConceptMap ) )? ( (lv_constraints_4_0= ruleConstraint ) )* ( (otherlv_5= RULE_ID ) )* otherlv_6= '}'
            {
            otherlv_0=(Token)match(input,19,FOLLOW_19_in_ruleConceptDeclaration738); 

                	newLeafNode(otherlv_0, grammarAccess.getConceptDeclarationAccess().getConceptKeyword_0());
                
            // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:311:1: ( (lv_name_1_0= RULE_ID ) )
            // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:312:1: (lv_name_1_0= RULE_ID )
            {
            // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:312:1: (lv_name_1_0= RULE_ID )
            // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:313:3: lv_name_1_0= RULE_ID
            {
            lv_name_1_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleConceptDeclaration755); 

            			newLeafNode(lv_name_1_0, grammarAccess.getConceptDeclarationAccess().getNameIDTerminalRuleCall_1_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getConceptDeclarationRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"name",
                    		lv_name_1_0, 
                    		"ID");
            	    

            }


            }

            otherlv_2=(Token)match(input,17,FOLLOW_17_in_ruleConceptDeclaration772); 

                	newLeafNode(otherlv_2, grammarAccess.getConceptDeclarationAccess().getLeftCurlyBracketKeyword_2());
                
            // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:333:1: ( (lv_conceptMapper_3_0= ruleConceptMap ) )?
            int alt5=2;
            int LA5_0 = input.LA(1);

            if ( ((LA5_0>=27 && LA5_0<=32)) ) {
                alt5=1;
            }
            switch (alt5) {
                case 1 :
                    // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:334:1: (lv_conceptMapper_3_0= ruleConceptMap )
                    {
                    // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:334:1: (lv_conceptMapper_3_0= ruleConceptMap )
                    // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:335:3: lv_conceptMapper_3_0= ruleConceptMap
                    {
                     
                    	        newCompositeNode(grammarAccess.getConceptDeclarationAccess().getConceptMapperConceptMapParserRuleCall_3_0()); 
                    	    
                    pushFollow(FOLLOW_ruleConceptMap_in_ruleConceptDeclaration793);
                    lv_conceptMapper_3_0=ruleConceptMap();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getConceptDeclarationRule());
                    	        }
                           		set(
                           			current, 
                           			"conceptMapper",
                            		lv_conceptMapper_3_0, 
                            		"ConceptMap");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }
                    break;

            }

            // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:351:3: ( (lv_constraints_4_0= ruleConstraint ) )*
            loop6:
            do {
                int alt6=2;
                int LA6_0 = input.LA(1);

                if ( ((LA6_0>=33 && LA6_0<=41)) ) {
                    alt6=1;
                }


                switch (alt6) {
            	case 1 :
            	    // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:352:1: (lv_constraints_4_0= ruleConstraint )
            	    {
            	    // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:352:1: (lv_constraints_4_0= ruleConstraint )
            	    // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:353:3: lv_constraints_4_0= ruleConstraint
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getConceptDeclarationAccess().getConstraintsConstraintParserRuleCall_4_0()); 
            	    	    
            	    pushFollow(FOLLOW_ruleConstraint_in_ruleConceptDeclaration815);
            	    lv_constraints_4_0=ruleConstraint();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getConceptDeclarationRule());
            	    	        }
            	           		add(
            	           			current, 
            	           			"constraints",
            	            		lv_constraints_4_0, 
            	            		"Constraint");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }
            	    break;

            	default :
            	    break loop6;
                }
            } while (true);

            // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:369:3: ( (otherlv_5= RULE_ID ) )*
            loop7:
            do {
                int alt7=2;
                int LA7_0 = input.LA(1);

                if ( (LA7_0==RULE_ID) ) {
                    alt7=1;
                }


                switch (alt7) {
            	case 1 :
            	    // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:370:1: (otherlv_5= RULE_ID )
            	    {
            	    // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:370:1: (otherlv_5= RULE_ID )
            	    // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:371:3: otherlv_5= RULE_ID
            	    {

            	    			if (current==null) {
            	    	            current = createModelElement(grammarAccess.getConceptDeclarationRule());
            	    	        }
            	            
            	    otherlv_5=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleConceptDeclaration836); 

            	    		newLeafNode(otherlv_5, grammarAccess.getConceptDeclarationAccess().getReferredConstraintSetsConstraintSetDeclarationCrossReference_5_0()); 
            	    	

            	    }


            	    }
            	    break;

            	default :
            	    break loop7;
                }
            } while (true);

            otherlv_6=(Token)match(input,18,FOLLOW_18_in_ruleConceptDeclaration849); 

                	newLeafNode(otherlv_6, grammarAccess.getConceptDeclarationAccess().getRightCurlyBracketKeyword_6());
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleConceptDeclaration"


    // $ANTLR start "entryRuleDependencyRelation"
    // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:394:1: entryRuleDependencyRelation returns [String current=null] : iv_ruleDependencyRelation= ruleDependencyRelation EOF ;
    public final String entryRuleDependencyRelation() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleDependencyRelation = null;


        try {
            // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:395:2: (iv_ruleDependencyRelation= ruleDependencyRelation EOF )
            // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:396:2: iv_ruleDependencyRelation= ruleDependencyRelation EOF
            {
             newCompositeNode(grammarAccess.getDependencyRelationRule()); 
            pushFollow(FOLLOW_ruleDependencyRelation_in_entryRuleDependencyRelation886);
            iv_ruleDependencyRelation=ruleDependencyRelation();

            state._fsp--;

             current =iv_ruleDependencyRelation.getText(); 
            match(input,EOF,FOLLOW_EOF_in_entryRuleDependencyRelation897); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleDependencyRelation"


    // $ANTLR start "ruleDependencyRelation"
    // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:403:1: ruleDependencyRelation returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= 'derives' | kw= 'creates' | kw= 'declares' | kw= 'invokes' | kw= 'depends' ) ;
    public final AntlrDatatypeRuleToken ruleDependencyRelation() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token kw=null;

         enterRule(); 
            
        try {
            // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:406:28: ( (kw= 'derives' | kw= 'creates' | kw= 'declares' | kw= 'invokes' | kw= 'depends' ) )
            // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:407:1: (kw= 'derives' | kw= 'creates' | kw= 'declares' | kw= 'invokes' | kw= 'depends' )
            {
            // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:407:1: (kw= 'derives' | kw= 'creates' | kw= 'declares' | kw= 'invokes' | kw= 'depends' )
            int alt8=5;
            switch ( input.LA(1) ) {
            case 20:
                {
                alt8=1;
                }
                break;
            case 21:
                {
                alt8=2;
                }
                break;
            case 22:
                {
                alt8=3;
                }
                break;
            case 23:
                {
                alt8=4;
                }
                break;
            case 24:
                {
                alt8=5;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 8, 0, input);

                throw nvae;
            }

            switch (alt8) {
                case 1 :
                    // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:408:2: kw= 'derives'
                    {
                    kw=(Token)match(input,20,FOLLOW_20_in_ruleDependencyRelation935); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getDependencyRelationAccess().getDerivesKeyword_0()); 
                        

                    }
                    break;
                case 2 :
                    // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:415:2: kw= 'creates'
                    {
                    kw=(Token)match(input,21,FOLLOW_21_in_ruleDependencyRelation954); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getDependencyRelationAccess().getCreatesKeyword_1()); 
                        

                    }
                    break;
                case 3 :
                    // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:422:2: kw= 'declares'
                    {
                    kw=(Token)match(input,22,FOLLOW_22_in_ruleDependencyRelation973); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getDependencyRelationAccess().getDeclaresKeyword_2()); 
                        

                    }
                    break;
                case 4 :
                    // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:429:2: kw= 'invokes'
                    {
                    kw=(Token)match(input,23,FOLLOW_23_in_ruleDependencyRelation992); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getDependencyRelationAccess().getInvokesKeyword_3()); 
                        

                    }
                    break;
                case 5 :
                    // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:436:2: kw= 'depends'
                    {
                    kw=(Token)match(input,24,FOLLOW_24_in_ruleDependencyRelation1011); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getDependencyRelationAccess().getDependsKeyword_4()); 
                        

                    }
                    break;

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleDependencyRelation"


    // $ANTLR start "entryRuleDependencyRuleDeclaration"
    // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:449:1: entryRuleDependencyRuleDeclaration returns [EObject current=null] : iv_ruleDependencyRuleDeclaration= ruleDependencyRuleDeclaration EOF ;
    public final EObject entryRuleDependencyRuleDeclaration() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleDependencyRuleDeclaration = null;


        try {
            // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:450:2: (iv_ruleDependencyRuleDeclaration= ruleDependencyRuleDeclaration EOF )
            // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:451:2: iv_ruleDependencyRuleDeclaration= ruleDependencyRuleDeclaration EOF
            {
             newCompositeNode(grammarAccess.getDependencyRuleDeclarationRule()); 
            pushFollow(FOLLOW_ruleDependencyRuleDeclaration_in_entryRuleDependencyRuleDeclaration1051);
            iv_ruleDependencyRuleDeclaration=ruleDependencyRuleDeclaration();

            state._fsp--;

             current =iv_ruleDependencyRuleDeclaration; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleDependencyRuleDeclaration1061); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleDependencyRuleDeclaration"


    // $ANTLR start "ruleDependencyRuleDeclaration"
    // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:458:1: ruleDependencyRuleDeclaration returns [EObject current=null] : ( ( ( (otherlv_0= RULE_ID ) ) ( (lv_type_1_0= RULE_DEPENDENCYTYPE ) ) otherlv_2= '-' ( (lv_relation_3_0= ruleDependencyRelation ) ) ( (otherlv_4= RULE_ID ) ) ) | (otherlv_5= 'only' ( (otherlv_6= RULE_ID ) ) ( (lv_type_7_0= RULE_ONLYCANDEPENDENCYTYPE ) ) otherlv_8= '-' ( (lv_relation_9_0= ruleDependencyRelation ) ) ( (otherlv_10= RULE_ID ) ) ) ) ;
    public final EObject ruleDependencyRuleDeclaration() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token lv_type_1_0=null;
        Token otherlv_2=null;
        Token otherlv_4=null;
        Token otherlv_5=null;
        Token otherlv_6=null;
        Token lv_type_7_0=null;
        Token otherlv_8=null;
        Token otherlv_10=null;
        AntlrDatatypeRuleToken lv_relation_3_0 = null;

        AntlrDatatypeRuleToken lv_relation_9_0 = null;


         enterRule(); 
            
        try {
            // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:461:28: ( ( ( ( (otherlv_0= RULE_ID ) ) ( (lv_type_1_0= RULE_DEPENDENCYTYPE ) ) otherlv_2= '-' ( (lv_relation_3_0= ruleDependencyRelation ) ) ( (otherlv_4= RULE_ID ) ) ) | (otherlv_5= 'only' ( (otherlv_6= RULE_ID ) ) ( (lv_type_7_0= RULE_ONLYCANDEPENDENCYTYPE ) ) otherlv_8= '-' ( (lv_relation_9_0= ruleDependencyRelation ) ) ( (otherlv_10= RULE_ID ) ) ) ) )
            // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:462:1: ( ( ( (otherlv_0= RULE_ID ) ) ( (lv_type_1_0= RULE_DEPENDENCYTYPE ) ) otherlv_2= '-' ( (lv_relation_3_0= ruleDependencyRelation ) ) ( (otherlv_4= RULE_ID ) ) ) | (otherlv_5= 'only' ( (otherlv_6= RULE_ID ) ) ( (lv_type_7_0= RULE_ONLYCANDEPENDENCYTYPE ) ) otherlv_8= '-' ( (lv_relation_9_0= ruleDependencyRelation ) ) ( (otherlv_10= RULE_ID ) ) ) )
            {
            // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:462:1: ( ( ( (otherlv_0= RULE_ID ) ) ( (lv_type_1_0= RULE_DEPENDENCYTYPE ) ) otherlv_2= '-' ( (lv_relation_3_0= ruleDependencyRelation ) ) ( (otherlv_4= RULE_ID ) ) ) | (otherlv_5= 'only' ( (otherlv_6= RULE_ID ) ) ( (lv_type_7_0= RULE_ONLYCANDEPENDENCYTYPE ) ) otherlv_8= '-' ( (lv_relation_9_0= ruleDependencyRelation ) ) ( (otherlv_10= RULE_ID ) ) ) )
            int alt9=2;
            int LA9_0 = input.LA(1);

            if ( (LA9_0==RULE_ID) ) {
                alt9=1;
            }
            else if ( (LA9_0==26) ) {
                alt9=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 9, 0, input);

                throw nvae;
            }
            switch (alt9) {
                case 1 :
                    // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:462:2: ( ( (otherlv_0= RULE_ID ) ) ( (lv_type_1_0= RULE_DEPENDENCYTYPE ) ) otherlv_2= '-' ( (lv_relation_3_0= ruleDependencyRelation ) ) ( (otherlv_4= RULE_ID ) ) )
                    {
                    // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:462:2: ( ( (otherlv_0= RULE_ID ) ) ( (lv_type_1_0= RULE_DEPENDENCYTYPE ) ) otherlv_2= '-' ( (lv_relation_3_0= ruleDependencyRelation ) ) ( (otherlv_4= RULE_ID ) ) )
                    // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:462:3: ( (otherlv_0= RULE_ID ) ) ( (lv_type_1_0= RULE_DEPENDENCYTYPE ) ) otherlv_2= '-' ( (lv_relation_3_0= ruleDependencyRelation ) ) ( (otherlv_4= RULE_ID ) )
                    {
                    // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:462:3: ( (otherlv_0= RULE_ID ) )
                    // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:463:1: (otherlv_0= RULE_ID )
                    {
                    // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:463:1: (otherlv_0= RULE_ID )
                    // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:464:3: otherlv_0= RULE_ID
                    {

                    			if (current==null) {
                    	            current = createModelElement(grammarAccess.getDependencyRuleDeclarationRule());
                    	        }
                            
                    otherlv_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleDependencyRuleDeclaration1107); 

                    		newLeafNode(otherlv_0, grammarAccess.getDependencyRuleDeclarationAccess().getSourceConceptDeclarationCrossReference_0_0_0()); 
                    	

                    }


                    }

                    // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:475:2: ( (lv_type_1_0= RULE_DEPENDENCYTYPE ) )
                    // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:476:1: (lv_type_1_0= RULE_DEPENDENCYTYPE )
                    {
                    // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:476:1: (lv_type_1_0= RULE_DEPENDENCYTYPE )
                    // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:477:3: lv_type_1_0= RULE_DEPENDENCYTYPE
                    {
                    lv_type_1_0=(Token)match(input,RULE_DEPENDENCYTYPE,FOLLOW_RULE_DEPENDENCYTYPE_in_ruleDependencyRuleDeclaration1124); 

                    			newLeafNode(lv_type_1_0, grammarAccess.getDependencyRuleDeclarationAccess().getTypeDependencyTypeTerminalRuleCall_0_1_0()); 
                    		

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getDependencyRuleDeclarationRule());
                    	        }
                           		setWithLastConsumed(
                           			current, 
                           			"type",
                            		lv_type_1_0, 
                            		"DependencyType");
                    	    

                    }


                    }

                    otherlv_2=(Token)match(input,25,FOLLOW_25_in_ruleDependencyRuleDeclaration1141); 

                        	newLeafNode(otherlv_2, grammarAccess.getDependencyRuleDeclarationAccess().getHyphenMinusKeyword_0_2());
                        
                    // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:497:1: ( (lv_relation_3_0= ruleDependencyRelation ) )
                    // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:498:1: (lv_relation_3_0= ruleDependencyRelation )
                    {
                    // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:498:1: (lv_relation_3_0= ruleDependencyRelation )
                    // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:499:3: lv_relation_3_0= ruleDependencyRelation
                    {
                     
                    	        newCompositeNode(grammarAccess.getDependencyRuleDeclarationAccess().getRelationDependencyRelationParserRuleCall_0_3_0()); 
                    	    
                    pushFollow(FOLLOW_ruleDependencyRelation_in_ruleDependencyRuleDeclaration1162);
                    lv_relation_3_0=ruleDependencyRelation();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getDependencyRuleDeclarationRule());
                    	        }
                           		set(
                           			current, 
                           			"relation",
                            		lv_relation_3_0, 
                            		"DependencyRelation");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }

                    // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:515:2: ( (otherlv_4= RULE_ID ) )
                    // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:516:1: (otherlv_4= RULE_ID )
                    {
                    // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:516:1: (otherlv_4= RULE_ID )
                    // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:517:3: otherlv_4= RULE_ID
                    {

                    			if (current==null) {
                    	            current = createModelElement(grammarAccess.getDependencyRuleDeclarationRule());
                    	        }
                            
                    otherlv_4=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleDependencyRuleDeclaration1182); 

                    		newLeafNode(otherlv_4, grammarAccess.getDependencyRuleDeclarationAccess().getTargetConceptDeclarationCrossReference_0_4_0()); 
                    	

                    }


                    }


                    }


                    }
                    break;
                case 2 :
                    // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:529:6: (otherlv_5= 'only' ( (otherlv_6= RULE_ID ) ) ( (lv_type_7_0= RULE_ONLYCANDEPENDENCYTYPE ) ) otherlv_8= '-' ( (lv_relation_9_0= ruleDependencyRelation ) ) ( (otherlv_10= RULE_ID ) ) )
                    {
                    // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:529:6: (otherlv_5= 'only' ( (otherlv_6= RULE_ID ) ) ( (lv_type_7_0= RULE_ONLYCANDEPENDENCYTYPE ) ) otherlv_8= '-' ( (lv_relation_9_0= ruleDependencyRelation ) ) ( (otherlv_10= RULE_ID ) ) )
                    // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:529:8: otherlv_5= 'only' ( (otherlv_6= RULE_ID ) ) ( (lv_type_7_0= RULE_ONLYCANDEPENDENCYTYPE ) ) otherlv_8= '-' ( (lv_relation_9_0= ruleDependencyRelation ) ) ( (otherlv_10= RULE_ID ) )
                    {
                    otherlv_5=(Token)match(input,26,FOLLOW_26_in_ruleDependencyRuleDeclaration1202); 

                        	newLeafNode(otherlv_5, grammarAccess.getDependencyRuleDeclarationAccess().getOnlyKeyword_1_0());
                        
                    // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:533:1: ( (otherlv_6= RULE_ID ) )
                    // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:534:1: (otherlv_6= RULE_ID )
                    {
                    // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:534:1: (otherlv_6= RULE_ID )
                    // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:535:3: otherlv_6= RULE_ID
                    {

                    			if (current==null) {
                    	            current = createModelElement(grammarAccess.getDependencyRuleDeclarationRule());
                    	        }
                            
                    otherlv_6=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleDependencyRuleDeclaration1222); 

                    		newLeafNode(otherlv_6, grammarAccess.getDependencyRuleDeclarationAccess().getSourceConceptDeclarationCrossReference_1_1_0()); 
                    	

                    }


                    }

                    // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:546:2: ( (lv_type_7_0= RULE_ONLYCANDEPENDENCYTYPE ) )
                    // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:547:1: (lv_type_7_0= RULE_ONLYCANDEPENDENCYTYPE )
                    {
                    // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:547:1: (lv_type_7_0= RULE_ONLYCANDEPENDENCYTYPE )
                    // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:548:3: lv_type_7_0= RULE_ONLYCANDEPENDENCYTYPE
                    {
                    lv_type_7_0=(Token)match(input,RULE_ONLYCANDEPENDENCYTYPE,FOLLOW_RULE_ONLYCANDEPENDENCYTYPE_in_ruleDependencyRuleDeclaration1239); 

                    			newLeafNode(lv_type_7_0, grammarAccess.getDependencyRuleDeclarationAccess().getTypeOnlyCanDependencyTypeTerminalRuleCall_1_2_0()); 
                    		

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getDependencyRuleDeclarationRule());
                    	        }
                           		setWithLastConsumed(
                           			current, 
                           			"type",
                            		lv_type_7_0, 
                            		"OnlyCanDependencyType");
                    	    

                    }


                    }

                    otherlv_8=(Token)match(input,25,FOLLOW_25_in_ruleDependencyRuleDeclaration1256); 

                        	newLeafNode(otherlv_8, grammarAccess.getDependencyRuleDeclarationAccess().getHyphenMinusKeyword_1_3());
                        
                    // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:568:1: ( (lv_relation_9_0= ruleDependencyRelation ) )
                    // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:569:1: (lv_relation_9_0= ruleDependencyRelation )
                    {
                    // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:569:1: (lv_relation_9_0= ruleDependencyRelation )
                    // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:570:3: lv_relation_9_0= ruleDependencyRelation
                    {
                     
                    	        newCompositeNode(grammarAccess.getDependencyRuleDeclarationAccess().getRelationDependencyRelationParserRuleCall_1_4_0()); 
                    	    
                    pushFollow(FOLLOW_ruleDependencyRelation_in_ruleDependencyRuleDeclaration1277);
                    lv_relation_9_0=ruleDependencyRelation();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getDependencyRuleDeclarationRule());
                    	        }
                           		set(
                           			current, 
                           			"relation",
                            		lv_relation_9_0, 
                            		"DependencyRelation");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }

                    // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:586:2: ( (otherlv_10= RULE_ID ) )
                    // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:587:1: (otherlv_10= RULE_ID )
                    {
                    // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:587:1: (otherlv_10= RULE_ID )
                    // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:588:3: otherlv_10= RULE_ID
                    {

                    			if (current==null) {
                    	            current = createModelElement(grammarAccess.getDependencyRuleDeclarationRule());
                    	        }
                            
                    otherlv_10=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleDependencyRuleDeclaration1297); 

                    		newLeafNode(otherlv_10, grammarAccess.getDependencyRuleDeclarationAccess().getTargetConceptDeclarationCrossReference_1_5_0()); 
                    	

                    }


                    }


                    }


                    }
                    break;

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleDependencyRuleDeclaration"


    // $ANTLR start "entryRulePackageMapping"
    // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:607:1: entryRulePackageMapping returns [EObject current=null] : iv_rulePackageMapping= rulePackageMapping EOF ;
    public final EObject entryRulePackageMapping() throws RecognitionException {
        EObject current = null;

        EObject iv_rulePackageMapping = null;


        try {
            // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:608:2: (iv_rulePackageMapping= rulePackageMapping EOF )
            // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:609:2: iv_rulePackageMapping= rulePackageMapping EOF
            {
             newCompositeNode(grammarAccess.getPackageMappingRule()); 
            pushFollow(FOLLOW_rulePackageMapping_in_entryRulePackageMapping1334);
            iv_rulePackageMapping=rulePackageMapping();

            state._fsp--;

             current =iv_rulePackageMapping; 
            match(input,EOF,FOLLOW_EOF_in_entryRulePackageMapping1344); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRulePackageMapping"


    // $ANTLR start "rulePackageMapping"
    // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:616:1: rulePackageMapping returns [EObject current=null] : ( (otherlv_0= 'package:' ( (lv_packageName_1_0= ruleQualifiedName ) ) ) this_SEPARATOR_2= RULE_SEPARATOR ) ;
    public final EObject rulePackageMapping() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token this_SEPARATOR_2=null;
        AntlrDatatypeRuleToken lv_packageName_1_0 = null;


         enterRule(); 
            
        try {
            // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:619:28: ( ( (otherlv_0= 'package:' ( (lv_packageName_1_0= ruleQualifiedName ) ) ) this_SEPARATOR_2= RULE_SEPARATOR ) )
            // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:620:1: ( (otherlv_0= 'package:' ( (lv_packageName_1_0= ruleQualifiedName ) ) ) this_SEPARATOR_2= RULE_SEPARATOR )
            {
            // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:620:1: ( (otherlv_0= 'package:' ( (lv_packageName_1_0= ruleQualifiedName ) ) ) this_SEPARATOR_2= RULE_SEPARATOR )
            // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:620:2: (otherlv_0= 'package:' ( (lv_packageName_1_0= ruleQualifiedName ) ) ) this_SEPARATOR_2= RULE_SEPARATOR
            {
            // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:620:2: (otherlv_0= 'package:' ( (lv_packageName_1_0= ruleQualifiedName ) ) )
            // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:620:4: otherlv_0= 'package:' ( (lv_packageName_1_0= ruleQualifiedName ) )
            {
            otherlv_0=(Token)match(input,27,FOLLOW_27_in_rulePackageMapping1382); 

                	newLeafNode(otherlv_0, grammarAccess.getPackageMappingAccess().getPackageKeyword_0_0());
                
            // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:624:1: ( (lv_packageName_1_0= ruleQualifiedName ) )
            // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:625:1: (lv_packageName_1_0= ruleQualifiedName )
            {
            // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:625:1: (lv_packageName_1_0= ruleQualifiedName )
            // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:626:3: lv_packageName_1_0= ruleQualifiedName
            {
             
            	        newCompositeNode(grammarAccess.getPackageMappingAccess().getPackageNameQualifiedNameParserRuleCall_0_1_0()); 
            	    
            pushFollow(FOLLOW_ruleQualifiedName_in_rulePackageMapping1403);
            lv_packageName_1_0=ruleQualifiedName();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getPackageMappingRule());
            	        }
                   		set(
                   			current, 
                   			"packageName",
                    		lv_packageName_1_0, 
                    		"QualifiedName");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }


            }

            this_SEPARATOR_2=(Token)match(input,RULE_SEPARATOR,FOLLOW_RULE_SEPARATOR_in_rulePackageMapping1415); 
             
                newLeafNode(this_SEPARATOR_2, grammarAccess.getPackageMappingAccess().getSEPARATORTerminalRuleCall_1()); 
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "rulePackageMapping"


    // $ANTLR start "entryRuleRegExpressionMapping"
    // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:654:1: entryRuleRegExpressionMapping returns [EObject current=null] : iv_ruleRegExpressionMapping= ruleRegExpressionMapping EOF ;
    public final EObject entryRuleRegExpressionMapping() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleRegExpressionMapping = null;


        try {
            // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:655:2: (iv_ruleRegExpressionMapping= ruleRegExpressionMapping EOF )
            // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:656:2: iv_ruleRegExpressionMapping= ruleRegExpressionMapping EOF
            {
             newCompositeNode(grammarAccess.getRegExpressionMappingRule()); 
            pushFollow(FOLLOW_ruleRegExpressionMapping_in_entryRuleRegExpressionMapping1450);
            iv_ruleRegExpressionMapping=ruleRegExpressionMapping();

            state._fsp--;

             current =iv_ruleRegExpressionMapping; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleRegExpressionMapping1460); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleRegExpressionMapping"


    // $ANTLR start "ruleRegExpressionMapping"
    // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:663:1: ruleRegExpressionMapping returns [EObject current=null] : ( (otherlv_0= 'regExpr:' ( (lv_regExpression_1_0= RULE_STRING ) ) ) this_SEPARATOR_2= RULE_SEPARATOR ) ;
    public final EObject ruleRegExpressionMapping() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token lv_regExpression_1_0=null;
        Token this_SEPARATOR_2=null;

         enterRule(); 
            
        try {
            // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:666:28: ( ( (otherlv_0= 'regExpr:' ( (lv_regExpression_1_0= RULE_STRING ) ) ) this_SEPARATOR_2= RULE_SEPARATOR ) )
            // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:667:1: ( (otherlv_0= 'regExpr:' ( (lv_regExpression_1_0= RULE_STRING ) ) ) this_SEPARATOR_2= RULE_SEPARATOR )
            {
            // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:667:1: ( (otherlv_0= 'regExpr:' ( (lv_regExpression_1_0= RULE_STRING ) ) ) this_SEPARATOR_2= RULE_SEPARATOR )
            // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:667:2: (otherlv_0= 'regExpr:' ( (lv_regExpression_1_0= RULE_STRING ) ) ) this_SEPARATOR_2= RULE_SEPARATOR
            {
            // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:667:2: (otherlv_0= 'regExpr:' ( (lv_regExpression_1_0= RULE_STRING ) ) )
            // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:667:4: otherlv_0= 'regExpr:' ( (lv_regExpression_1_0= RULE_STRING ) )
            {
            otherlv_0=(Token)match(input,28,FOLLOW_28_in_ruleRegExpressionMapping1498); 

                	newLeafNode(otherlv_0, grammarAccess.getRegExpressionMappingAccess().getRegExprKeyword_0_0());
                
            // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:671:1: ( (lv_regExpression_1_0= RULE_STRING ) )
            // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:672:1: (lv_regExpression_1_0= RULE_STRING )
            {
            // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:672:1: (lv_regExpression_1_0= RULE_STRING )
            // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:673:3: lv_regExpression_1_0= RULE_STRING
            {
            lv_regExpression_1_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleRegExpressionMapping1515); 

            			newLeafNode(lv_regExpression_1_0, grammarAccess.getRegExpressionMappingAccess().getRegExpressionSTRINGTerminalRuleCall_0_1_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getRegExpressionMappingRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"regExpression",
                    		lv_regExpression_1_0, 
                    		"STRING");
            	    

            }


            }


            }

            this_SEPARATOR_2=(Token)match(input,RULE_SEPARATOR,FOLLOW_RULE_SEPARATOR_in_ruleRegExpressionMapping1532); 
             
                newLeafNode(this_SEPARATOR_2, grammarAccess.getRegExpressionMappingAccess().getSEPARATORTerminalRuleCall_1()); 
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleRegExpressionMapping"


    // $ANTLR start "entryRuleParentMapping"
    // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:701:1: entryRuleParentMapping returns [EObject current=null] : iv_ruleParentMapping= ruleParentMapping EOF ;
    public final EObject entryRuleParentMapping() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleParentMapping = null;


        try {
            // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:702:2: (iv_ruleParentMapping= ruleParentMapping EOF )
            // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:703:2: iv_ruleParentMapping= ruleParentMapping EOF
            {
             newCompositeNode(grammarAccess.getParentMappingRule()); 
            pushFollow(FOLLOW_ruleParentMapping_in_entryRuleParentMapping1567);
            iv_ruleParentMapping=ruleParentMapping();

            state._fsp--;

             current =iv_ruleParentMapping; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleParentMapping1577); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleParentMapping"


    // $ANTLR start "ruleParentMapping"
    // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:710:1: ruleParentMapping returns [EObject current=null] : ( (otherlv_0= 'parent:' ( (lv_parent_1_0= ruleQualifiedName ) ) ) this_SEPARATOR_2= RULE_SEPARATOR ) ;
    public final EObject ruleParentMapping() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token this_SEPARATOR_2=null;
        AntlrDatatypeRuleToken lv_parent_1_0 = null;


         enterRule(); 
            
        try {
            // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:713:28: ( ( (otherlv_0= 'parent:' ( (lv_parent_1_0= ruleQualifiedName ) ) ) this_SEPARATOR_2= RULE_SEPARATOR ) )
            // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:714:1: ( (otherlv_0= 'parent:' ( (lv_parent_1_0= ruleQualifiedName ) ) ) this_SEPARATOR_2= RULE_SEPARATOR )
            {
            // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:714:1: ( (otherlv_0= 'parent:' ( (lv_parent_1_0= ruleQualifiedName ) ) ) this_SEPARATOR_2= RULE_SEPARATOR )
            // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:714:2: (otherlv_0= 'parent:' ( (lv_parent_1_0= ruleQualifiedName ) ) ) this_SEPARATOR_2= RULE_SEPARATOR
            {
            // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:714:2: (otherlv_0= 'parent:' ( (lv_parent_1_0= ruleQualifiedName ) ) )
            // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:714:4: otherlv_0= 'parent:' ( (lv_parent_1_0= ruleQualifiedName ) )
            {
            otherlv_0=(Token)match(input,29,FOLLOW_29_in_ruleParentMapping1615); 

                	newLeafNode(otherlv_0, grammarAccess.getParentMappingAccess().getParentKeyword_0_0());
                
            // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:718:1: ( (lv_parent_1_0= ruleQualifiedName ) )
            // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:719:1: (lv_parent_1_0= ruleQualifiedName )
            {
            // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:719:1: (lv_parent_1_0= ruleQualifiedName )
            // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:720:3: lv_parent_1_0= ruleQualifiedName
            {
             
            	        newCompositeNode(grammarAccess.getParentMappingAccess().getParentQualifiedNameParserRuleCall_0_1_0()); 
            	    
            pushFollow(FOLLOW_ruleQualifiedName_in_ruleParentMapping1636);
            lv_parent_1_0=ruleQualifiedName();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getParentMappingRule());
            	        }
                   		set(
                   			current, 
                   			"parent",
                    		lv_parent_1_0, 
                    		"QualifiedName");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }


            }

            this_SEPARATOR_2=(Token)match(input,RULE_SEPARATOR,FOLLOW_RULE_SEPARATOR_in_ruleParentMapping1648); 
             
                newLeafNode(this_SEPARATOR_2, grammarAccess.getParentMappingAccess().getSEPARATORTerminalRuleCall_1()); 
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleParentMapping"


    // $ANTLR start "entryRulePrefixMapping"
    // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:748:1: entryRulePrefixMapping returns [EObject current=null] : iv_rulePrefixMapping= rulePrefixMapping EOF ;
    public final EObject entryRulePrefixMapping() throws RecognitionException {
        EObject current = null;

        EObject iv_rulePrefixMapping = null;


        try {
            // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:749:2: (iv_rulePrefixMapping= rulePrefixMapping EOF )
            // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:750:2: iv_rulePrefixMapping= rulePrefixMapping EOF
            {
             newCompositeNode(grammarAccess.getPrefixMappingRule()); 
            pushFollow(FOLLOW_rulePrefixMapping_in_entryRulePrefixMapping1683);
            iv_rulePrefixMapping=rulePrefixMapping();

            state._fsp--;

             current =iv_rulePrefixMapping; 
            match(input,EOF,FOLLOW_EOF_in_entryRulePrefixMapping1693); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRulePrefixMapping"


    // $ANTLR start "rulePrefixMapping"
    // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:757:1: rulePrefixMapping returns [EObject current=null] : ( (otherlv_0= 'prefix:' ( (lv_prefixName_1_0= RULE_STRING ) ) ) this_SEPARATOR_2= RULE_SEPARATOR ) ;
    public final EObject rulePrefixMapping() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token lv_prefixName_1_0=null;
        Token this_SEPARATOR_2=null;

         enterRule(); 
            
        try {
            // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:760:28: ( ( (otherlv_0= 'prefix:' ( (lv_prefixName_1_0= RULE_STRING ) ) ) this_SEPARATOR_2= RULE_SEPARATOR ) )
            // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:761:1: ( (otherlv_0= 'prefix:' ( (lv_prefixName_1_0= RULE_STRING ) ) ) this_SEPARATOR_2= RULE_SEPARATOR )
            {
            // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:761:1: ( (otherlv_0= 'prefix:' ( (lv_prefixName_1_0= RULE_STRING ) ) ) this_SEPARATOR_2= RULE_SEPARATOR )
            // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:761:2: (otherlv_0= 'prefix:' ( (lv_prefixName_1_0= RULE_STRING ) ) ) this_SEPARATOR_2= RULE_SEPARATOR
            {
            // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:761:2: (otherlv_0= 'prefix:' ( (lv_prefixName_1_0= RULE_STRING ) ) )
            // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:761:4: otherlv_0= 'prefix:' ( (lv_prefixName_1_0= RULE_STRING ) )
            {
            otherlv_0=(Token)match(input,30,FOLLOW_30_in_rulePrefixMapping1731); 

                	newLeafNode(otherlv_0, grammarAccess.getPrefixMappingAccess().getPrefixKeyword_0_0());
                
            // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:765:1: ( (lv_prefixName_1_0= RULE_STRING ) )
            // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:766:1: (lv_prefixName_1_0= RULE_STRING )
            {
            // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:766:1: (lv_prefixName_1_0= RULE_STRING )
            // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:767:3: lv_prefixName_1_0= RULE_STRING
            {
            lv_prefixName_1_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_rulePrefixMapping1748); 

            			newLeafNode(lv_prefixName_1_0, grammarAccess.getPrefixMappingAccess().getPrefixNameSTRINGTerminalRuleCall_0_1_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getPrefixMappingRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"prefixName",
                    		lv_prefixName_1_0, 
                    		"STRING");
            	    

            }


            }


            }

            this_SEPARATOR_2=(Token)match(input,RULE_SEPARATOR,FOLLOW_RULE_SEPARATOR_in_rulePrefixMapping1765); 
             
                newLeafNode(this_SEPARATOR_2, grammarAccess.getPrefixMappingAccess().getSEPARATORTerminalRuleCall_1()); 
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "rulePrefixMapping"


    // $ANTLR start "entryRuleSuffixMapping"
    // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:795:1: entryRuleSuffixMapping returns [EObject current=null] : iv_ruleSuffixMapping= ruleSuffixMapping EOF ;
    public final EObject entryRuleSuffixMapping() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleSuffixMapping = null;


        try {
            // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:796:2: (iv_ruleSuffixMapping= ruleSuffixMapping EOF )
            // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:797:2: iv_ruleSuffixMapping= ruleSuffixMapping EOF
            {
             newCompositeNode(grammarAccess.getSuffixMappingRule()); 
            pushFollow(FOLLOW_ruleSuffixMapping_in_entryRuleSuffixMapping1800);
            iv_ruleSuffixMapping=ruleSuffixMapping();

            state._fsp--;

             current =iv_ruleSuffixMapping; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleSuffixMapping1810); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleSuffixMapping"


    // $ANTLR start "ruleSuffixMapping"
    // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:804:1: ruleSuffixMapping returns [EObject current=null] : ( (otherlv_0= 'suffix:' ( (lv_suffixName_1_0= RULE_STRING ) ) ) this_SEPARATOR_2= RULE_SEPARATOR ) ;
    public final EObject ruleSuffixMapping() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token lv_suffixName_1_0=null;
        Token this_SEPARATOR_2=null;

         enterRule(); 
            
        try {
            // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:807:28: ( ( (otherlv_0= 'suffix:' ( (lv_suffixName_1_0= RULE_STRING ) ) ) this_SEPARATOR_2= RULE_SEPARATOR ) )
            // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:808:1: ( (otherlv_0= 'suffix:' ( (lv_suffixName_1_0= RULE_STRING ) ) ) this_SEPARATOR_2= RULE_SEPARATOR )
            {
            // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:808:1: ( (otherlv_0= 'suffix:' ( (lv_suffixName_1_0= RULE_STRING ) ) ) this_SEPARATOR_2= RULE_SEPARATOR )
            // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:808:2: (otherlv_0= 'suffix:' ( (lv_suffixName_1_0= RULE_STRING ) ) ) this_SEPARATOR_2= RULE_SEPARATOR
            {
            // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:808:2: (otherlv_0= 'suffix:' ( (lv_suffixName_1_0= RULE_STRING ) ) )
            // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:808:4: otherlv_0= 'suffix:' ( (lv_suffixName_1_0= RULE_STRING ) )
            {
            otherlv_0=(Token)match(input,31,FOLLOW_31_in_ruleSuffixMapping1848); 

                	newLeafNode(otherlv_0, grammarAccess.getSuffixMappingAccess().getSuffixKeyword_0_0());
                
            // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:812:1: ( (lv_suffixName_1_0= RULE_STRING ) )
            // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:813:1: (lv_suffixName_1_0= RULE_STRING )
            {
            // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:813:1: (lv_suffixName_1_0= RULE_STRING )
            // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:814:3: lv_suffixName_1_0= RULE_STRING
            {
            lv_suffixName_1_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleSuffixMapping1865); 

            			newLeafNode(lv_suffixName_1_0, grammarAccess.getSuffixMappingAccess().getSuffixNameSTRINGTerminalRuleCall_0_1_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getSuffixMappingRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"suffixName",
                    		lv_suffixName_1_0, 
                    		"STRING");
            	    

            }


            }


            }

            this_SEPARATOR_2=(Token)match(input,RULE_SEPARATOR,FOLLOW_RULE_SEPARATOR_in_ruleSuffixMapping1882); 
             
                newLeafNode(this_SEPARATOR_2, grammarAccess.getSuffixMappingAccess().getSEPARATORTerminalRuleCall_1()); 
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleSuffixMapping"


    // $ANTLR start "entryRuleNameClassMapping"
    // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:842:1: entryRuleNameClassMapping returns [EObject current=null] : iv_ruleNameClassMapping= ruleNameClassMapping EOF ;
    public final EObject entryRuleNameClassMapping() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleNameClassMapping = null;


        try {
            // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:843:2: (iv_ruleNameClassMapping= ruleNameClassMapping EOF )
            // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:844:2: iv_ruleNameClassMapping= ruleNameClassMapping EOF
            {
             newCompositeNode(grammarAccess.getNameClassMappingRule()); 
            pushFollow(FOLLOW_ruleNameClassMapping_in_entryRuleNameClassMapping1917);
            iv_ruleNameClassMapping=ruleNameClassMapping();

            state._fsp--;

             current =iv_ruleNameClassMapping; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleNameClassMapping1927); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleNameClassMapping"


    // $ANTLR start "ruleNameClassMapping"
    // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:851:1: ruleNameClassMapping returns [EObject current=null] : ( (otherlv_0= 'name:' ( (lv_nameOfClass_1_0= RULE_STRING ) ) ) this_SEPARATOR_2= RULE_SEPARATOR ) ;
    public final EObject ruleNameClassMapping() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token lv_nameOfClass_1_0=null;
        Token this_SEPARATOR_2=null;

         enterRule(); 
            
        try {
            // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:854:28: ( ( (otherlv_0= 'name:' ( (lv_nameOfClass_1_0= RULE_STRING ) ) ) this_SEPARATOR_2= RULE_SEPARATOR ) )
            // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:855:1: ( (otherlv_0= 'name:' ( (lv_nameOfClass_1_0= RULE_STRING ) ) ) this_SEPARATOR_2= RULE_SEPARATOR )
            {
            // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:855:1: ( (otherlv_0= 'name:' ( (lv_nameOfClass_1_0= RULE_STRING ) ) ) this_SEPARATOR_2= RULE_SEPARATOR )
            // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:855:2: (otherlv_0= 'name:' ( (lv_nameOfClass_1_0= RULE_STRING ) ) ) this_SEPARATOR_2= RULE_SEPARATOR
            {
            // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:855:2: (otherlv_0= 'name:' ( (lv_nameOfClass_1_0= RULE_STRING ) ) )
            // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:855:4: otherlv_0= 'name:' ( (lv_nameOfClass_1_0= RULE_STRING ) )
            {
            otherlv_0=(Token)match(input,32,FOLLOW_32_in_ruleNameClassMapping1965); 

                	newLeafNode(otherlv_0, grammarAccess.getNameClassMappingAccess().getNameKeyword_0_0());
                
            // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:859:1: ( (lv_nameOfClass_1_0= RULE_STRING ) )
            // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:860:1: (lv_nameOfClass_1_0= RULE_STRING )
            {
            // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:860:1: (lv_nameOfClass_1_0= RULE_STRING )
            // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:861:3: lv_nameOfClass_1_0= RULE_STRING
            {
            lv_nameOfClass_1_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleNameClassMapping1982); 

            			newLeafNode(lv_nameOfClass_1_0, grammarAccess.getNameClassMappingAccess().getNameOfClassSTRINGTerminalRuleCall_0_1_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getNameClassMappingRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"nameOfClass",
                    		lv_nameOfClass_1_0, 
                    		"STRING");
            	    

            }


            }


            }

            this_SEPARATOR_2=(Token)match(input,RULE_SEPARATOR,FOLLOW_RULE_SEPARATOR_in_ruleNameClassMapping1999); 
             
                newLeafNode(this_SEPARATOR_2, grammarAccess.getNameClassMappingAccess().getSEPARATORTerminalRuleCall_1()); 
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleNameClassMapping"


    // $ANTLR start "entryRuleConceptMap"
    // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:889:1: entryRuleConceptMap returns [EObject current=null] : iv_ruleConceptMap= ruleConceptMap EOF ;
    public final EObject entryRuleConceptMap() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleConceptMap = null;


        try {
            // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:890:2: (iv_ruleConceptMap= ruleConceptMap EOF )
            // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:891:2: iv_ruleConceptMap= ruleConceptMap EOF
            {
             newCompositeNode(grammarAccess.getConceptMapRule()); 
            pushFollow(FOLLOW_ruleConceptMap_in_entryRuleConceptMap2034);
            iv_ruleConceptMap=ruleConceptMap();

            state._fsp--;

             current =iv_ruleConceptMap; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleConceptMap2044); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleConceptMap"


    // $ANTLR start "ruleConceptMap"
    // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:898:1: ruleConceptMap returns [EObject current=null] : (this_PackageMapping_0= rulePackageMapping | this_RegExpressionMapping_1= ruleRegExpressionMapping | this_ParentMapping_2= ruleParentMapping | this_SuffixMapping_3= ruleSuffixMapping | this_PrefixMapping_4= rulePrefixMapping | this_NameClassMapping_5= ruleNameClassMapping ) ;
    public final EObject ruleConceptMap() throws RecognitionException {
        EObject current = null;

        EObject this_PackageMapping_0 = null;

        EObject this_RegExpressionMapping_1 = null;

        EObject this_ParentMapping_2 = null;

        EObject this_SuffixMapping_3 = null;

        EObject this_PrefixMapping_4 = null;

        EObject this_NameClassMapping_5 = null;


         enterRule(); 
            
        try {
            // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:901:28: ( (this_PackageMapping_0= rulePackageMapping | this_RegExpressionMapping_1= ruleRegExpressionMapping | this_ParentMapping_2= ruleParentMapping | this_SuffixMapping_3= ruleSuffixMapping | this_PrefixMapping_4= rulePrefixMapping | this_NameClassMapping_5= ruleNameClassMapping ) )
            // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:902:1: (this_PackageMapping_0= rulePackageMapping | this_RegExpressionMapping_1= ruleRegExpressionMapping | this_ParentMapping_2= ruleParentMapping | this_SuffixMapping_3= ruleSuffixMapping | this_PrefixMapping_4= rulePrefixMapping | this_NameClassMapping_5= ruleNameClassMapping )
            {
            // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:902:1: (this_PackageMapping_0= rulePackageMapping | this_RegExpressionMapping_1= ruleRegExpressionMapping | this_ParentMapping_2= ruleParentMapping | this_SuffixMapping_3= ruleSuffixMapping | this_PrefixMapping_4= rulePrefixMapping | this_NameClassMapping_5= ruleNameClassMapping )
            int alt10=6;
            switch ( input.LA(1) ) {
            case 27:
                {
                alt10=1;
                }
                break;
            case 28:
                {
                alt10=2;
                }
                break;
            case 29:
                {
                alt10=3;
                }
                break;
            case 31:
                {
                alt10=4;
                }
                break;
            case 30:
                {
                alt10=5;
                }
                break;
            case 32:
                {
                alt10=6;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 10, 0, input);

                throw nvae;
            }

            switch (alt10) {
                case 1 :
                    // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:903:5: this_PackageMapping_0= rulePackageMapping
                    {
                     
                            newCompositeNode(grammarAccess.getConceptMapAccess().getPackageMappingParserRuleCall_0()); 
                        
                    pushFollow(FOLLOW_rulePackageMapping_in_ruleConceptMap2091);
                    this_PackageMapping_0=rulePackageMapping();

                    state._fsp--;

                     
                            current = this_PackageMapping_0; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 2 :
                    // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:913:5: this_RegExpressionMapping_1= ruleRegExpressionMapping
                    {
                     
                            newCompositeNode(grammarAccess.getConceptMapAccess().getRegExpressionMappingParserRuleCall_1()); 
                        
                    pushFollow(FOLLOW_ruleRegExpressionMapping_in_ruleConceptMap2118);
                    this_RegExpressionMapping_1=ruleRegExpressionMapping();

                    state._fsp--;

                     
                            current = this_RegExpressionMapping_1; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 3 :
                    // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:923:5: this_ParentMapping_2= ruleParentMapping
                    {
                     
                            newCompositeNode(grammarAccess.getConceptMapAccess().getParentMappingParserRuleCall_2()); 
                        
                    pushFollow(FOLLOW_ruleParentMapping_in_ruleConceptMap2145);
                    this_ParentMapping_2=ruleParentMapping();

                    state._fsp--;

                     
                            current = this_ParentMapping_2; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 4 :
                    // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:933:5: this_SuffixMapping_3= ruleSuffixMapping
                    {
                     
                            newCompositeNode(grammarAccess.getConceptMapAccess().getSuffixMappingParserRuleCall_3()); 
                        
                    pushFollow(FOLLOW_ruleSuffixMapping_in_ruleConceptMap2172);
                    this_SuffixMapping_3=ruleSuffixMapping();

                    state._fsp--;

                     
                            current = this_SuffixMapping_3; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 5 :
                    // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:943:5: this_PrefixMapping_4= rulePrefixMapping
                    {
                     
                            newCompositeNode(grammarAccess.getConceptMapAccess().getPrefixMappingParserRuleCall_4()); 
                        
                    pushFollow(FOLLOW_rulePrefixMapping_in_ruleConceptMap2199);
                    this_PrefixMapping_4=rulePrefixMapping();

                    state._fsp--;

                     
                            current = this_PrefixMapping_4; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 6 :
                    // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:953:5: this_NameClassMapping_5= ruleNameClassMapping
                    {
                     
                            newCompositeNode(grammarAccess.getConceptMapAccess().getNameClassMappingParserRuleCall_5()); 
                        
                    pushFollow(FOLLOW_ruleNameClassMapping_in_ruleConceptMap2226);
                    this_NameClassMapping_5=ruleNameClassMapping();

                    state._fsp--;

                     
                            current = this_NameClassMapping_5; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleConceptMap"


    // $ANTLR start "entryRuleConstraint"
    // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:969:1: entryRuleConstraint returns [EObject current=null] : iv_ruleConstraint= ruleConstraint EOF ;
    public final EObject entryRuleConstraint() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleConstraint = null;


        try {
            // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:970:2: (iv_ruleConstraint= ruleConstraint EOF )
            // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:971:2: iv_ruleConstraint= ruleConstraint EOF
            {
             newCompositeNode(grammarAccess.getConstraintRule()); 
            pushFollow(FOLLOW_ruleConstraint_in_entryRuleConstraint2261);
            iv_ruleConstraint=ruleConstraint();

            state._fsp--;

             current =iv_ruleConstraint; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleConstraint2271); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleConstraint"


    // $ANTLR start "ruleConstraint"
    // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:978:1: ruleConstraint returns [EObject current=null] : (this_MetricConstraint_0= ruleMetricConstraint this_SEPARATOR_1= RULE_SEPARATOR ) ;
    public final EObject ruleConstraint() throws RecognitionException {
        EObject current = null;

        Token this_SEPARATOR_1=null;
        EObject this_MetricConstraint_0 = null;


         enterRule(); 
            
        try {
            // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:981:28: ( (this_MetricConstraint_0= ruleMetricConstraint this_SEPARATOR_1= RULE_SEPARATOR ) )
            // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:982:1: (this_MetricConstraint_0= ruleMetricConstraint this_SEPARATOR_1= RULE_SEPARATOR )
            {
            // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:982:1: (this_MetricConstraint_0= ruleMetricConstraint this_SEPARATOR_1= RULE_SEPARATOR )
            // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:983:5: this_MetricConstraint_0= ruleMetricConstraint this_SEPARATOR_1= RULE_SEPARATOR
            {
             
                    newCompositeNode(grammarAccess.getConstraintAccess().getMetricConstraintParserRuleCall_0()); 
                
            pushFollow(FOLLOW_ruleMetricConstraint_in_ruleConstraint2318);
            this_MetricConstraint_0=ruleMetricConstraint();

            state._fsp--;

             
                    current = this_MetricConstraint_0; 
                    afterParserOrEnumRuleCall();
                
            this_SEPARATOR_1=(Token)match(input,RULE_SEPARATOR,FOLLOW_RULE_SEPARATOR_in_ruleConstraint2328); 
             
                newLeafNode(this_SEPARATOR_1, grammarAccess.getConstraintAccess().getSEPARATORTerminalRuleCall_1()); 
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleConstraint"


    // $ANTLR start "entryRuleMetricConstraint"
    // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:1003:1: entryRuleMetricConstraint returns [EObject current=null] : iv_ruleMetricConstraint= ruleMetricConstraint EOF ;
    public final EObject entryRuleMetricConstraint() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleMetricConstraint = null;


        try {
            // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:1004:2: (iv_ruleMetricConstraint= ruleMetricConstraint EOF )
            // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:1005:2: iv_ruleMetricConstraint= ruleMetricConstraint EOF
            {
             newCompositeNode(grammarAccess.getMetricConstraintRule()); 
            pushFollow(FOLLOW_ruleMetricConstraint_in_entryRuleMetricConstraint2363);
            iv_ruleMetricConstraint=ruleMetricConstraint();

            state._fsp--;

             current =iv_ruleMetricConstraint; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleMetricConstraint2373); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleMetricConstraint"


    // $ANTLR start "ruleMetricConstraint"
    // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:1012:1: ruleMetricConstraint returns [EObject current=null] : ( ( (lv_metric_0_0= ruleMetric ) ) ( (lv_operator_1_0= RULE_OPERATOR ) ) ( (lv_value_2_0= ruleValue ) ) ) ;
    public final EObject ruleMetricConstraint() throws RecognitionException {
        EObject current = null;

        Token lv_operator_1_0=null;
        AntlrDatatypeRuleToken lv_metric_0_0 = null;

        AntlrDatatypeRuleToken lv_value_2_0 = null;


         enterRule(); 
            
        try {
            // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:1015:28: ( ( ( (lv_metric_0_0= ruleMetric ) ) ( (lv_operator_1_0= RULE_OPERATOR ) ) ( (lv_value_2_0= ruleValue ) ) ) )
            // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:1016:1: ( ( (lv_metric_0_0= ruleMetric ) ) ( (lv_operator_1_0= RULE_OPERATOR ) ) ( (lv_value_2_0= ruleValue ) ) )
            {
            // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:1016:1: ( ( (lv_metric_0_0= ruleMetric ) ) ( (lv_operator_1_0= RULE_OPERATOR ) ) ( (lv_value_2_0= ruleValue ) ) )
            // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:1016:2: ( (lv_metric_0_0= ruleMetric ) ) ( (lv_operator_1_0= RULE_OPERATOR ) ) ( (lv_value_2_0= ruleValue ) )
            {
            // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:1016:2: ( (lv_metric_0_0= ruleMetric ) )
            // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:1017:1: (lv_metric_0_0= ruleMetric )
            {
            // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:1017:1: (lv_metric_0_0= ruleMetric )
            // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:1018:3: lv_metric_0_0= ruleMetric
            {
             
            	        newCompositeNode(grammarAccess.getMetricConstraintAccess().getMetricMetricParserRuleCall_0_0()); 
            	    
            pushFollow(FOLLOW_ruleMetric_in_ruleMetricConstraint2419);
            lv_metric_0_0=ruleMetric();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getMetricConstraintRule());
            	        }
                   		set(
                   			current, 
                   			"metric",
                    		lv_metric_0_0, 
                    		"Metric");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:1034:2: ( (lv_operator_1_0= RULE_OPERATOR ) )
            // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:1035:1: (lv_operator_1_0= RULE_OPERATOR )
            {
            // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:1035:1: (lv_operator_1_0= RULE_OPERATOR )
            // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:1036:3: lv_operator_1_0= RULE_OPERATOR
            {
            lv_operator_1_0=(Token)match(input,RULE_OPERATOR,FOLLOW_RULE_OPERATOR_in_ruleMetricConstraint2436); 

            			newLeafNode(lv_operator_1_0, grammarAccess.getMetricConstraintAccess().getOperatorOPERATORTerminalRuleCall_1_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getMetricConstraintRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"operator",
                    		lv_operator_1_0, 
                    		"OPERATOR");
            	    

            }


            }

            // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:1052:2: ( (lv_value_2_0= ruleValue ) )
            // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:1053:1: (lv_value_2_0= ruleValue )
            {
            // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:1053:1: (lv_value_2_0= ruleValue )
            // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:1054:3: lv_value_2_0= ruleValue
            {
             
            	        newCompositeNode(grammarAccess.getMetricConstraintAccess().getValueValueParserRuleCall_2_0()); 
            	    
            pushFollow(FOLLOW_ruleValue_in_ruleMetricConstraint2462);
            lv_value_2_0=ruleValue();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getMetricConstraintRule());
            	        }
                   		set(
                   			current, 
                   			"value",
                    		lv_value_2_0, 
                    		"Value");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleMetricConstraint"


    // $ANTLR start "entryRuleMetric"
    // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:1078:1: entryRuleMetric returns [String current=null] : iv_ruleMetric= ruleMetric EOF ;
    public final String entryRuleMetric() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleMetric = null;


        try {
            // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:1079:2: (iv_ruleMetric= ruleMetric EOF )
            // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:1080:2: iv_ruleMetric= ruleMetric EOF
            {
             newCompositeNode(grammarAccess.getMetricRule()); 
            pushFollow(FOLLOW_ruleMetric_in_entryRuleMetric2499);
            iv_ruleMetric=ruleMetric();

            state._fsp--;

             current =iv_ruleMetric.getText(); 
            match(input,EOF,FOLLOW_EOF_in_entryRuleMetric2510); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleMetric"


    // $ANTLR start "ruleMetric"
    // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:1087:1: ruleMetric returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= 'LOC' | kw= 'CBO' | kw= 'AC' | kw= 'CR' | kw= 'HEff' | kw= 'HDiff' | kw= 'NOA' | kw= 'NOO' | kw= 'CM' ) ;
    public final AntlrDatatypeRuleToken ruleMetric() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token kw=null;

         enterRule(); 
            
        try {
            // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:1090:28: ( (kw= 'LOC' | kw= 'CBO' | kw= 'AC' | kw= 'CR' | kw= 'HEff' | kw= 'HDiff' | kw= 'NOA' | kw= 'NOO' | kw= 'CM' ) )
            // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:1091:1: (kw= 'LOC' | kw= 'CBO' | kw= 'AC' | kw= 'CR' | kw= 'HEff' | kw= 'HDiff' | kw= 'NOA' | kw= 'NOO' | kw= 'CM' )
            {
            // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:1091:1: (kw= 'LOC' | kw= 'CBO' | kw= 'AC' | kw= 'CR' | kw= 'HEff' | kw= 'HDiff' | kw= 'NOA' | kw= 'NOO' | kw= 'CM' )
            int alt11=9;
            switch ( input.LA(1) ) {
            case 33:
                {
                alt11=1;
                }
                break;
            case 34:
                {
                alt11=2;
                }
                break;
            case 35:
                {
                alt11=3;
                }
                break;
            case 36:
                {
                alt11=4;
                }
                break;
            case 37:
                {
                alt11=5;
                }
                break;
            case 38:
                {
                alt11=6;
                }
                break;
            case 39:
                {
                alt11=7;
                }
                break;
            case 40:
                {
                alt11=8;
                }
                break;
            case 41:
                {
                alt11=9;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 11, 0, input);

                throw nvae;
            }

            switch (alt11) {
                case 1 :
                    // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:1092:2: kw= 'LOC'
                    {
                    kw=(Token)match(input,33,FOLLOW_33_in_ruleMetric2548); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getMetricAccess().getLOCKeyword_0()); 
                        

                    }
                    break;
                case 2 :
                    // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:1099:2: kw= 'CBO'
                    {
                    kw=(Token)match(input,34,FOLLOW_34_in_ruleMetric2567); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getMetricAccess().getCBOKeyword_1()); 
                        

                    }
                    break;
                case 3 :
                    // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:1106:2: kw= 'AC'
                    {
                    kw=(Token)match(input,35,FOLLOW_35_in_ruleMetric2586); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getMetricAccess().getACKeyword_2()); 
                        

                    }
                    break;
                case 4 :
                    // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:1113:2: kw= 'CR'
                    {
                    kw=(Token)match(input,36,FOLLOW_36_in_ruleMetric2605); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getMetricAccess().getCRKeyword_3()); 
                        

                    }
                    break;
                case 5 :
                    // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:1120:2: kw= 'HEff'
                    {
                    kw=(Token)match(input,37,FOLLOW_37_in_ruleMetric2624); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getMetricAccess().getHEffKeyword_4()); 
                        

                    }
                    break;
                case 6 :
                    // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:1127:2: kw= 'HDiff'
                    {
                    kw=(Token)match(input,38,FOLLOW_38_in_ruleMetric2643); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getMetricAccess().getHDiffKeyword_5()); 
                        

                    }
                    break;
                case 7 :
                    // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:1134:2: kw= 'NOA'
                    {
                    kw=(Token)match(input,39,FOLLOW_39_in_ruleMetric2662); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getMetricAccess().getNOAKeyword_6()); 
                        

                    }
                    break;
                case 8 :
                    // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:1141:2: kw= 'NOO'
                    {
                    kw=(Token)match(input,40,FOLLOW_40_in_ruleMetric2681); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getMetricAccess().getNOOKeyword_7()); 
                        

                    }
                    break;
                case 9 :
                    // ../br.pucrio.inf.tamdera/src-gen/br/pucrio/inf/parser/antlr/internal/InternalTamdera.g:1148:2: kw= 'CM'
                    {
                    kw=(Token)match(input,41,FOLLOW_41_in_ruleMetric2700); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getMetricAccess().getCMKeyword_8()); 
                        

                    }
                    break;

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleMetric"

    // Delegated rules


 

    public static final BitSet FOLLOW_ruleRulesSpecification_in_entryRuleRulesSpecification75 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleRulesSpecification85 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleParagraph_in_ruleRulesSpecification130 = new BitSet(new long[]{0x0000000004090042L});
    public static final BitSet FOLLOW_ruleQualifiedName_in_entryRuleQualifiedName167 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleQualifiedName178 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleQualifiedName218 = new BitSet(new long[]{0x0000000000008002L});
    public static final BitSet FOLLOW_15_in_ruleQualifiedName237 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleQualifiedName252 = new BitSet(new long[]{0x0000000000008002L});
    public static final BitSet FOLLOW_ruleValue_in_entryRuleValue300 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleValue311 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_INT_in_ruleValue350 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleParagraph_in_entryRuleParagraph394 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleParagraph404 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleConceptDeclaration_in_ruleParagraph451 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleDependencyRuleDeclaration_in_ruleParagraph478 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleConstraintSetDeclaration_in_ruleParagraph505 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleConstraintSetDeclaration_in_entryRuleConstraintSetDeclaration540 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleConstraintSetDeclaration550 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_16_in_ruleConstraintSetDeclaration587 = new BitSet(new long[]{0x0000000000000040L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleConstraintSetDeclaration604 = new BitSet(new long[]{0x0000000000020000L});
    public static final BitSet FOLLOW_17_in_ruleConstraintSetDeclaration621 = new BitSet(new long[]{0x000003FE00040000L});
    public static final BitSet FOLLOW_ruleConstraint_in_ruleConstraintSetDeclaration642 = new BitSet(new long[]{0x000003FE00040000L});
    public static final BitSet FOLLOW_18_in_ruleConstraintSetDeclaration655 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleConceptDeclaration_in_entryRuleConceptDeclaration691 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleConceptDeclaration701 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_19_in_ruleConceptDeclaration738 = new BitSet(new long[]{0x0000000000000040L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleConceptDeclaration755 = new BitSet(new long[]{0x0000000000020000L});
    public static final BitSet FOLLOW_17_in_ruleConceptDeclaration772 = new BitSet(new long[]{0x000003FFF8040040L});
    public static final BitSet FOLLOW_ruleConceptMap_in_ruleConceptDeclaration793 = new BitSet(new long[]{0x000003FE00040040L});
    public static final BitSet FOLLOW_ruleConstraint_in_ruleConceptDeclaration815 = new BitSet(new long[]{0x000003FE00040040L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleConceptDeclaration836 = new BitSet(new long[]{0x0000000000040040L});
    public static final BitSet FOLLOW_18_in_ruleConceptDeclaration849 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleDependencyRelation_in_entryRuleDependencyRelation886 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleDependencyRelation897 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_20_in_ruleDependencyRelation935 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_21_in_ruleDependencyRelation954 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_22_in_ruleDependencyRelation973 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_23_in_ruleDependencyRelation992 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_24_in_ruleDependencyRelation1011 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleDependencyRuleDeclaration_in_entryRuleDependencyRuleDeclaration1051 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleDependencyRuleDeclaration1061 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleDependencyRuleDeclaration1107 = new BitSet(new long[]{0x0000000000000080L});
    public static final BitSet FOLLOW_RULE_DEPENDENCYTYPE_in_ruleDependencyRuleDeclaration1124 = new BitSet(new long[]{0x0000000002000000L});
    public static final BitSet FOLLOW_25_in_ruleDependencyRuleDeclaration1141 = new BitSet(new long[]{0x0000000001F00000L});
    public static final BitSet FOLLOW_ruleDependencyRelation_in_ruleDependencyRuleDeclaration1162 = new BitSet(new long[]{0x0000000000000040L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleDependencyRuleDeclaration1182 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_26_in_ruleDependencyRuleDeclaration1202 = new BitSet(new long[]{0x0000000000000040L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleDependencyRuleDeclaration1222 = new BitSet(new long[]{0x0000000000000100L});
    public static final BitSet FOLLOW_RULE_ONLYCANDEPENDENCYTYPE_in_ruleDependencyRuleDeclaration1239 = new BitSet(new long[]{0x0000000002000000L});
    public static final BitSet FOLLOW_25_in_ruleDependencyRuleDeclaration1256 = new BitSet(new long[]{0x0000000001F00000L});
    public static final BitSet FOLLOW_ruleDependencyRelation_in_ruleDependencyRuleDeclaration1277 = new BitSet(new long[]{0x0000000000000040L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleDependencyRuleDeclaration1297 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulePackageMapping_in_entryRulePackageMapping1334 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRulePackageMapping1344 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_27_in_rulePackageMapping1382 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_ruleQualifiedName_in_rulePackageMapping1403 = new BitSet(new long[]{0x0000000000000200L});
    public static final BitSet FOLLOW_RULE_SEPARATOR_in_rulePackageMapping1415 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleRegExpressionMapping_in_entryRuleRegExpressionMapping1450 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleRegExpressionMapping1460 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_28_in_ruleRegExpressionMapping1498 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleRegExpressionMapping1515 = new BitSet(new long[]{0x0000000000000200L});
    public static final BitSet FOLLOW_RULE_SEPARATOR_in_ruleRegExpressionMapping1532 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleParentMapping_in_entryRuleParentMapping1567 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleParentMapping1577 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_29_in_ruleParentMapping1615 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_ruleQualifiedName_in_ruleParentMapping1636 = new BitSet(new long[]{0x0000000000000200L});
    public static final BitSet FOLLOW_RULE_SEPARATOR_in_ruleParentMapping1648 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulePrefixMapping_in_entryRulePrefixMapping1683 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRulePrefixMapping1693 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_30_in_rulePrefixMapping1731 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_STRING_in_rulePrefixMapping1748 = new BitSet(new long[]{0x0000000000000200L});
    public static final BitSet FOLLOW_RULE_SEPARATOR_in_rulePrefixMapping1765 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleSuffixMapping_in_entryRuleSuffixMapping1800 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleSuffixMapping1810 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_31_in_ruleSuffixMapping1848 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleSuffixMapping1865 = new BitSet(new long[]{0x0000000000000200L});
    public static final BitSet FOLLOW_RULE_SEPARATOR_in_ruleSuffixMapping1882 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleNameClassMapping_in_entryRuleNameClassMapping1917 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleNameClassMapping1927 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_32_in_ruleNameClassMapping1965 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleNameClassMapping1982 = new BitSet(new long[]{0x0000000000000200L});
    public static final BitSet FOLLOW_RULE_SEPARATOR_in_ruleNameClassMapping1999 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleConceptMap_in_entryRuleConceptMap2034 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleConceptMap2044 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulePackageMapping_in_ruleConceptMap2091 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleRegExpressionMapping_in_ruleConceptMap2118 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleParentMapping_in_ruleConceptMap2145 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleSuffixMapping_in_ruleConceptMap2172 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulePrefixMapping_in_ruleConceptMap2199 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleNameClassMapping_in_ruleConceptMap2226 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleConstraint_in_entryRuleConstraint2261 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleConstraint2271 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleMetricConstraint_in_ruleConstraint2318 = new BitSet(new long[]{0x0000000000000200L});
    public static final BitSet FOLLOW_RULE_SEPARATOR_in_ruleConstraint2328 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleMetricConstraint_in_entryRuleMetricConstraint2363 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleMetricConstraint2373 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleMetric_in_ruleMetricConstraint2419 = new BitSet(new long[]{0x0000000000000400L});
    public static final BitSet FOLLOW_RULE_OPERATOR_in_ruleMetricConstraint2436 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_ruleValue_in_ruleMetricConstraint2462 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleMetric_in_entryRuleMetric2499 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleMetric2510 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_33_in_ruleMetric2548 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_34_in_ruleMetric2567 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_35_in_ruleMetric2586 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_36_in_ruleMetric2605 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_37_in_ruleMetric2624 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_38_in_ruleMetric2643 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_39_in_ruleMetric2662 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_40_in_ruleMetric2681 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_41_in_ruleMetric2700 = new BitSet(new long[]{0x0000000000000002L});

}